iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
JavaScript

Java程式實作系列 第 23

Java進階語法-1

  • 分享至 

  • xImage
  •  

#介面(Interface)

  • 定義與用途:
    介面則更像是一個協議,定義了一組行為,強制任何實現它的類都必須遵守。它不提供具體的實現,除非使用 Java 8 之後的 default 和 static方法。

範例:日誌系統中的介面
java
interface Logger {
void log(String message); // 抽象方法

  default void error(String message) {
      System.out.println("ERROR: " + message);
  }
  
  static void info(String message) {
      System.out.println("INFO: " + message);
  }

}

class FileLogger implements Logger {
@Override
public void log(String message) {
System.out.println("Logging to file: " + message);
}
}

class ConsoleLogger implements Logger {
@Override
public void log(String message) {
System.out.println("Logging to console: " + message);
}
}

這裡,Logger介面定義了 log()方法,並提供了 error()的預設實現(使用 default),而 info()是一個靜態方法,可以直接通過介面名稱調用。

  • 適用場景:
    當你希望不同類型的日誌記錄器(如檔案日誌、控制台日誌)都實現相同的記錄行為(log()),但不需要強制它們繼承相同的基類時,可以使用介面。

#介面與抽象類的區別
·抽象類是一個類,通常用於表示具有部分共同行為和屬性的對象,它允許具體方法和抽象方法並存,還可以包含字段。
·介面是一個契約,強制實現類去遵守某些行為約定,並不涉及具體實現(除了 Java 8 之後的 default和 static方法)。

-選擇時機:
·當你需要表示多個類共享某些具體實現或狀態時,應該使用抽象類
·當不同類之間有共同行為,但它們不一定共享結構或狀態時,應該使用介面。

這樣的設計可以讓系統更靈活,支付處理器、日誌記錄器等應用場景都可以根據需求自由擴展不同的具體實現。


上一篇
Java進階語法
下一篇
Java進階語法-2
系列文
Java程式實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言